/*
 * @Description: 接口的扩展和合并
 * @Autor: HuiSir<273250950@qq.com>
 * @Date: 2021-04-30 16:48:20
 * @LastEditTime: 2021-04-30 16:58:49
 */

/**
 * 不同的接口可以使用`extends`关键字进行扩展（相当于合并）
 * 接口还可以和`type`自定义类型进行扩展（合并）
 * 相同接口名的接口会自动合并
 */
interface Name {
    name: string
}

interface UserInfo extends Name {
    age: number
}

/* 实现 */
const user: UserInfo = {
    name: "小明",
    age: 12
}


/**
 * 接口和`type`合并
 */
type X = {
    name: string;
}

interface Y extends X {
    age: number;
}


/**
 * 相同接口名的接口会自动合并
 */

interface Dog {
    name: string
}

interface Dog {
    type: string
}

/*
最终 Dog 接口为
interface Dog {
    name: string
    type: string
}
*/